import axios from "axios";
import { ElMessage } from "element-plus";
import useUserStore from "../store/modules/user";

// 创建 axios 实例
const req = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API, // 设置基础 URL
  timeout: 5000, // 请求超时时间
});
// 请求拦截器
req.interceptors.request.use(
  (config) => {
    // 可以在这里添加请求头或其他配置
    const userStore = useUserStore();
    if (userStore.token) {
      config.headers.token = userStore.token; // 将 token 添加到请求头
    }
    return config;
  });

// 响应拦截器
req.interceptors.response.use(
  (response) => {
    if (response.data.code !== 200) {
      ElMessage.error(response.data.msg || '请求失败');
    }
    // 成功响应处理
    return response.data.data; // 返回数据部分
  },
  (error) => {
    // // 错误响应处理
    let status = error.response.status
    let msg = ''
    switch (status) {
      case 400:
        msg = '请求错误(400)';
        break;
      case 401:
        msg = '未授权，请重新登录(401)';
        break;
      case 403:
        msg = '拒绝访问(403)';
        break;
      case 404:
        msg = '请求出错(404)';
        break;
      case 408:
        msg = '请求超时(408)';
        break;
      case 500:
        msg = '服务器错误(500)';
        break;
      case 501:
        msg = '服务未实现(501)';
        break;
      case 502:
        msg = '网络错误(502)';
        break;
      case 503:
        msg = '服务不可用(503)';
        break;
      case 504:
        msg = '网络超时(504)';
        break;
      case 505:
        msg = 'HTTP版本不受支持(505)';
        break;
      default:
        msg = `连接出错(${status})!`;
    }
    ElMessage({
      type: 'error',
      message: msg,
    })

    return Promise.reject(error);
  }
);
// 对外暴露
export default req;